/**
 * Created by zm on 2020/2/4.
 */
/**
 * 公共jssdk
 *
 */
import Vue from 'vue';
// import wx from 'weixin-js-sdk'

export default {
  //企业签名验证
  checkConfig: function(appId, timestamp, nonceStr, signature) {
    wx.config({
      beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
      debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
      appId: appId, // 必填，企业微信的corpID
      timestamp: timestamp, // 必填，生成签名的时间戳
      nonceStr: nonceStr, // 必填，生成签名的随机串
      signature: signature, // 必填，签名，见附录1
      jsApiList: [
        'onMenuShareAppMessage',
        'onMenuShareWechat',
        'onMenuShareTimeline',
        'downloadVoice',
        'chooseImage',
        'previewImage',
        'uploadImage',
        'downloadImage',
        'getLocalImgData',
        'hideOptionMenu',
        'showOptionMenu',
        'hideMenuItems',
        'showMenuItems',
      ], // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
    });
  },
  //应用的签名验证
  checkAgentConfig: function(corpid, agentid, timestamp, nonceStr, signature) {
    wx.agentConfig({
      corpid: corpid, // 必填，企业微信的corpid，必须与当前登录的企业一致
      agentid: agentid, // 必填，企业微信的应用id
      timestamp: timestamp, // 必填，生成签名的时间戳
      nonceStr: nonceStr, // 必填，生成签名的随机串
      signature: signature, // 必填，签名，见附录1
      jsApiList: ['selectExternalContact', 'openUserProfile', 'thirdPartyOpenPage', 'getCurExternalContact'], //必填
      success: function(res) {
        // 回调
      },
      fail: function(res) {
        if (res.errMsg.indexOf('function not exist') > -1) {
          alert('版本过低请升级');
        }
      },
    });
  },
  //隐藏右上角功能  要先调用企业签名成功后调用
  //隐藏全部
  hideAll: function() {
    wx.ready(function() {
      // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      wx.hideOptionMenu();
    });
  },
  //显示全部
  showAll: function() {
    wx.ready(function() {
      // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      wx.showOptionMenu();
    });
  },
  /***
 * 附录3
 * 基本类
     调整字体: “menuItem:setFont”
     刷新: “menuItem:refresh”
 传播类
     转发: “menuItem:share:appMessage”
     微信: “menuItem:share:wechat”
     收藏: “menuItem:favorite”
 保护类
     复制链接: “menuItem:copyUrl”
     Safari: “menuItem:openWithSafari”
     邮件: “menuItem:share:email”
 * **/
  //批量隐藏功能按钮接口
  hideMenuItems: function() {
    wx.ready(function() {
      // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      wx.hideMenuItems({
        menuList: [], // 要隐藏的菜单项，所有menu项见附录3  批量接口只支持隐藏传播类
      });
    });
  },
  //批量显示功能按钮接口
  showMenuItems: function() {
    wx.ready(function() {
      // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      wx.showMenuItems({
        menuList: [], // 要隐藏的菜单项，所有menu项见附录3 批量接口只支持隐藏传播类
      });
    });
  },
  //转发给企业微信好友
  onMenuShareAppMessage: function(title, desc, link, imgUrl) {
    wx.ready(function() {
      // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      wx.onMenuShareAppMessage({
        title: title, // 分享标题
        desc: desc, // 分享描述
        link: link, // 分享链接
        imgUrl: imgUrl, // 分享图标
        success: function() {
          // 用户确认分享后执行的回调函数
        },
        cancel: function() {
          // 用户取消分享后执行的回调函数
        },
      });
    });
  },
  //分享给微信好友
  onMenuShareWechat: function(title, desc, link, imgUrl) {
    wx.ready(function() {
      // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      wx.onMenuShareWechat({
        title: title, // 分享标题
        desc: desc, // 分享描述
        link: link, // 分享链接
        imgUrl: imgUrl, // 分享图标
        success: function() {
          // 用户确认分享后执行的回调函数
        },
        cancel: function() {
          // 用户取消分享后执行的回调函数
        },
      });
    });
  },
  //分享到朋友圈
  onMenuShareTimeline: function(title, link, imgUrl) {
    wx.ready(function() {
      // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，
      // config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，
      // 则须把相关接口放在ready函数中调用来确保正确执行。
      // 对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      wx.onMenuShareTimeline({
        title: title, // 分享标题
        link: link, // 分享链接
        imgUrl: imgUrl, // 分享图标
        success: function() {
          // 用户确认分享后执行的回调函数
        },
        cancel: function() {
          // 用户取消分享后执行的回调函数
        },
      });
    });
  },
  //获取本地图片接口
  //备注：此接口仅在 iOS WKWebview 下提供，用于兼容 iOS WKWebview
  // 不支持 localId 直接显示图片的问题。要求IOS版本为2.4.6及以上
  getLocalImgData: function(localId) {
    wx.getLocalImgData({
      localId: localId, // 图片的localID
      success: function(res) {
        var localData = res.localData; // localData是图片的base64数据，可以用img标签显示
      },
    });
  },
  //拍照或从手机相册中选图接口
  chooseImage: function() {
    wx.chooseImage({
      count: 1, // 默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      defaultCameraMode: 'batch', //表示进入拍照界面的默认模式，目前有normal与batch两种选择，normal表示普通单拍模式，batch表示连拍模式，不传该参数则为normal模式。（注：用户进入拍照界面仍然可自由切换两种模式）
      success: function(res) {
        var localIds = res.localIds; // 返回选定照片的本地ID列表，
        // andriod中localId可以作为img标签的src属性显示图片；
        // 而在IOS中需通过上面的接口getLocalImgData获取图片base64数据，从而用于img标签的显示
      },
    });
  },
  //上传图片接口
  uploadImage: function(localId) {
    wx.uploadImage({
      localId: localId, // 需要上传的图片的本地ID，由chooseImage接口获得
      isShowProgressTips: 1, // 默认为1，显示进度提示
      success: function(res) {
        var serverId = res.serverId; // 返回图片的服务器端ID
      },
    });
  },
  //下载图片接口
  downloadImage: function(serverId) {
    wx.downloadImage({
      serverId: serverId, // 需要下载的图片的服务器端ID，由uploadImage接口获得
      isShowProgressTips: 1, // 默认为1，显示进度提示
      success: function(res) {
        var localId = res.localId; // 返回图片下载后的本地ID
      },
    });
  },
  //预览图片接口
  previewImage: function(current, urls) {
    wx.previewImage({
      current: current, // 当前显示图片的http链接
      urls: urls, // 需要预览的图片http链接列表  数组
    });
  },
  //使用企业微信内置地图查看位置接口
  openLocation: function(latitude, longitude, name, address, scale) {
    wx.openLocation({
      latitude: latitude, // 纬度，浮点数，范围为90 ~ -90
      longitude: longitude, // 经度，浮点数，范围为180 ~ -180。
      name: name, // 位置名
      address: address, // 地址详情说明
      scale: scale, // 地图缩放级别,整形值,范围从1~28。默认为16
    });
  },
  //获取地理位置接口
  getLocation: function(type) {
    wx.getLocation({
      type: type ? type : 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
      success: function(res) {
        var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
        var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
        var speed = res.speed; // 速度，以米/每秒计
        var accuracy = res.accuracy; // 位置精度
      },
    });
  },
  //打开持续定位接口
  startAutoLBS: function(type) {
    wx.invoke(
      'startAutoLBS',
      {
        type: type ? type : 'wgs84', // wgs84是gps坐标，gcj02是火星坐标
      },
      function(res) {
        if (res.err_msg == 'startAutoLBS:ok') {
          //调用成功
        } else {
          //错误处理
        }
      },
    );
  },
  //停止持续定位接口
  stopAutoLBS: function() {
    wx.invoke('stopAutoLBS', {}, function(res) {
      if (res.err_msg == 'stopAutoLBS:ok') {
        //调用成功
      } else {
        //错误处理
      }
    });
  },
  //监听地理位置变化
  onLocationChange: function() {
    wx.onLocationChange(function(res) {
      if (res.errMsg == 'auto:location:report:ok') {
        var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
        var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
        var speed = res.speed; // 速度，以米/每秒计
        var accuracy = res.accuracy; // 位置精度
        var lbsIndex = 0;
        //判断现在经纬度和已知经纬度的差距来处理逻辑
      } else {
        //错误处理
      }
    });
  },
  //创建会话
  openEnterpriseChat: function(str1, str2) {
    wx.openEnterpriseChat({
      // 注意：userIds和externalUserIds至少选填一个，且userIds+openIds总数不能超过2000。
      userIds: str1, //参与会话的企业成员列表，格式为userid1;userid2;...，用分号隔开。 'zhangshan;lisi;wangwu'
      externalUserIds: str2, // 参与会话的外部联系人列表，格式为userId1;userId2;…，用分号隔开。
      groupName: '讨论组', // 必填，会话名称。单聊时该参数传入空字符串""即可。 'wmEAlECwAAHrbWYDOK5u3Af13xlYDDNQ;wmEAlECwAAHrbWYDOK5u3Af13xlYDDNT'
      success: function(res) {
        // 回调
      },
      fail: function(res) {
        if (res.errMsg.indexOf('function not exist') > -1) {
          alert('版本过低请升级');
        }
      },
    });
  },
};
